#pragma once

class Camera
{
    struct CameraMatrices
    {
        glm::mat4 viewMatrix;
        glm::mat4 projMatrix;
    };

public:
	Camera();

	void init();

    void rotateY(float dt);
    void rotateX(float dt);
    void moveLeft(float dt);
    void moveForward(float dt);
	void moveVert(float dist);
	void updateView();
    glm::vec3 getViewDirection();

    glm::mat4 &getProjMatrix() { return projMatrix; }
    glm::mat4 &getViewMatrix() { return viewMatrix; }
	glm::vec3 eye;
private:
	glm::mat4 projMatrix;
    glm::mat4 viewMatrix;

    
    glm::vec3 rotation;
    glm::vec3 up;

	glm::ivec2 vpDim;

private:
};

